﻿

namespace Acoris.Rendering
{
    using System;
    using System.Collections.Generic;
    using System.Numerics;

    /// <summary>
    /// represents a underline class
    /// </summary>
    public sealed class Underline:IEqualityComparer<Underline>,IEquatable<Underline>
    {
        public Underline(Vector2[] points) {
            this.Points = points;
        }

        /// <summary>
        /// gets or sets drawing start point x offset
        /// </summary>
        public float StartXOffset { get; set; }

        /// <summary>
        /// gets or sets drawing start point y offset
        /// </summary>
        public float StartYOffset { get; set; }

        /// <summary>
        /// gets or sets a value that indicate X offset increment
        /// </summary>
        public int XOffsetIncreament { get; set; } = FollowElementWidth;

        /// <summary>
        /// gets or sets underline brush
        /// </summary>
        public Brush UnderlineBrush { get; set; }

        /// <summary>
        /// gets Underline Points
        /// </summary>
        public readonly Vector2[] Points;

        /// <summary>
        /// represents a value that value indicate underling x offset
        /// increament following associating element width
        /// </summary>
        public const int FollowElementWidth = -1;

        /// <summary>
        /// 
        /// </summary>
        public static readonly Underline StrikeThroughStyle
            = new Underline(new[] { new Vector2(0, 0), new Vector2(1, 1) })
            {
                StartXOffset = .5f,
                StartYOffset = .5f
            };

        /// <summary>
        /// 
        /// </summary>
        public static readonly Underline UnderlineStyle
            = new Underline(new[] { new Vector2(0, 0), new Vector2(1, 1) })
            {

            };

        #region  Method

        public override bool Equals(object obj) {
            return base.Equals(obj);
        }

        public override int GetHashCode() {
            return base.GetHashCode();
        }

        public override string ToString() {
            return base.ToString();
        }

        public bool Equals(Underline x, Underline y) {
            throw new NotImplementedException();
        }

        public int GetHashCode(Underline obj) {
            throw new NotImplementedException();
        }

        public bool Equals(Underline other) {
            throw new NotImplementedException();
        }

        #endregion

    }
}
